<?php

defined('BASEPATH') OR exit('No direct script access allowed');
require APPPATH . '/libraries/REST_Controller.php';

class Operaciones extends REST_Controller {

    function reservas_get() {
        $idUsuario = $this->get('idUsuario');
        if (!$idUsuario) {
            $this->response(NULL, 400);
        }

        $this->load->model("reserva_model");
        $result = $this->reserva_model->getReservas($idUsuario);

        if ($result) {
            $this->response($result, 200);
        } else {
            $this->response(array('error' => 'ERROR servicios get'), 404);
        }
    }

    function reserva_post() {
        $idUsuario = $this->get('idUsuario');
        $idProgramacion = $this->get('idProgramacion');
        $montoPagar = $this->get('montoPagar');
        $asientos = explode('-', $this->get('asientos'));
        $pasajeros = explode('-', $this->get('pasajeros'));
        $formaPago = $this->get('formaPago');
        $tarjeta = $this->get('tarjeta');
        $numAsientos = sizeof($asientos);

        if (!$idUsuario || !$idProgramacion || !$montoPagar || !$asientos || !$pasajeros || !$formaPago || !$tarjeta) {
            $this->response(NULL, 400);
        }

        $this->load->model("asiento_model");
        $this->load->model("reserva_model");
        $message = "OK";

        // 1ro actualizamos los asientos cambiandole de estado
        for ($i = 0; $i < sizeof($asientos); $i++) {
            $message = $this->asiento_model->updateAsiento($asientos[$i], 'RESERVADO');
        }

        // 2do creamos la reserva
        $idReserva = $this->reserva_model->insertReserva($idUsuario, $idProgramacion, $montoPagar, $numAsientos, $formaPago, $tarjeta);

        // 3ro actualizamos los asientos libres
        $cantAsientosLibres = $this->asiento_model->getNumAsientosLibres($idProgramacion);
        $nuevaCantidad = $cantAsientosLibres - $numAsientos;
        $this->asiento_model->updateAsientosLibres($idProgramacion, $nuevaCantidad);

        // 4to guardamos la información de los pasajeros
        //$message = $this->reserva_model->savePasajeros($idReserva, $asientos, $pasajeros);

        $this->response($idReserva, 200); // 200 being the HTTP response code
    }

    function venta_post() {
        $idUsuario = $this->get('idUsuario');
        $idProgramacion = $this->get('idProgramacion');
        $montoPagar = $this->get('montoPagar');
        $asientos = explode('-', $this->get('asientos'));
        $pasajeros = explode('-', $this->get('pasajeros'));
        $formaPago = $this->get('formaPago');
        $tarjeta = $this->get('tarjeta');
        $numAsientos = sizeof($asientos);

        if (!$idUsuario || !$idProgramacion || !$montoPagar || !$asientos || !$pasajeros || !$formaPago || !$tarjeta) {
            $this->response(NULL, 400);
        }

        $this->load->model("asiento_model");
        $this->load->model("reserva_model");
        $message = "OK";

        // 1ro actualizamos los asientos cambiandole de estado
        for ($i = 0; $i < sizeof($asientos); $i++) {
            $message = $this->asiento_model->updateAsiento($asientos[$i], 'VENDIDO');
        }

        // 2do creamos la reserva
        $idReserva = $this->reserva_model->insertReservaVenta($idUsuario, $idProgramacion, $montoPagar, $numAsientos, $formaPago, $tarjeta);

        // 3ro actualizamos los asientos libres
        $cantAsientosLibres = $this->asiento_model->getNumAsientosLibres($idProgramacion);
        $nuevaCantidad = $cantAsientosLibres - $numAsientos;
        $this->asiento_model->updateAsientosLibres($idProgramacion, $nuevaCantidad);

        // 4to guardamos la información de los pasajeros
        //$message = $this->Reserva_Model->savePasajeros($idReserva, $asientos, $pasajeros);

        $this->response(array('idReserva' => $idReserva), 200); // 200 being the HTTP response code
    }

    function ventaReserva_post() {
        $idReserva = $this->get('idReserva');
        if (!$idReserva) {
            $this->response(NULL, 400);
        }

        $this->load->model("reserva_model");
        $message = $this->reserva_model->updateReserva($idReserva); //compra de pasajes
        $this->response(array('affected_rows' => $message), 200); // 200 being the HTTP response code
    }

    function eliminaReserva_post() {
        $idReserva = $this->get('idReserva');
        if (!$idReserva) {
            $this->response(NULL, 400);
        }

        $this->load->model("reserva_model");
        $message = $this->reserva_model->deleteReserva($idReserva); // eliminar reserva
        $this->response(array('affected_rows' => $message), 200); // 200 being the HTTP response code
    }

    function cabecera_get() {
        $idUsuario = $this->get('idUsuario');
        if (!$idUsuario) {
            $this->response(NULL, 400);
        }

        $this->load->model("reserva_model");
        $pasajes = $this->reserva_model->getPasajesCount($idUsuario);
        $reservas = $this->reserva_model->getReservasCount($idUsuario);

        $result = array($pasajes, $reservas);

        if ($result) {
            $this->response($result, 200);
        } else {
            $this->response(array('error' => 'ERROR servicios get'), 404);
        }
    }

    function pasajes_get() {
        $idUsuario = $this->get('idUsuario');
        if (!$idUsuario) {
            $this->response(NULL, 400);
        }

        $this->load->model("reserva_model");
        $result = $this->reserva_model->getPasajes($idUsuario);

        if ($result) {
            $this->response($result, 200);
        } else {
            $this->response(array('error' => 'ERROR servicios get'), 404);
        }
    }

}